1. Field of the Invention
This invention relates to maintaining and configuring systems.
2. Background Art
A system is comprised of components. Before a system can be built the components of the system must be identified. To configure a system, a user must select the parts to include in the system. Typically, one who is knowledgeable about a system and its components defines the system. Thus, for example, an automobile salesperson assists an automobile buyer in determining the type and features of the automobile. The salesperson understands the features and options that are available to create a valid configuration. Some features and options cannot be combined. The selection of some features caused other features to be unavailable, etc. It would otherwise be difficult for the buyer to identify all of the features and options available on the automobile that can be combined to create a valid configuration.
Computer systems have been developed to assist one in configuring a system. However, these systems use a configuration language to define a system. Like a programming language, a configuration language uses a syntax that must be understood by a user who is maintaining the data (i.e., a data maintainer). To use one of these configuration systems, it is necessary for a data maintainer to understand the configuration language. This limits the number of users who are able to use the configuration systems. That is, the level of sophistication needed to communicate with the configuration system (through a configuration language) results in less sophisticated users being unable to use the system.
In addition, configuration systems impose a flow or ordering to the user operations. For example, a user is required to remove components from the system in reverse of the order in which they were chosen. Thus, a user may be forced to remove components that the user wants to keep in the configuration to remove an unwanted component. A novice user may have perform many removal operations before achieving an acceptable configuration. If the novice user is required to remove components in a preset order, the user can become frustrated or confused and abort the configuration process.
These systems are designed for a more sophisticated user that has knowledge of the system that is being configured as well as the configuration system used to configure the system. A end user such as an automobile shopper would have difficulty using these systems.
Further, to use these systems a user must be trained to understand the configuration language. Thus, a user who otherwise has knowledge of the systems that are being configured must undergo training to be able to use these configuration systems to configure systems. This leads to increased expenditures such as for training.
The invention provides the ability to interactively select and configure a product among a set of related products based on availability and compatibility of features and options. It does not impose an order in the selection of products, features or options; only valid selections can be made at any time. To create an electronic representation of the product information to achieve the above goal, the invention provides a framework for defining a product line.
A product line is defined as a set of related products. A product line has a set of products that contain parts, or components. Parts used to define a product are selected from a parts catalog. Parts in a product definition are related or classified as: included (parts that are included by default), required choices (a choice among a group of parts that must be made to achieve a valid configuration), optional (parts that can be optionally included in the configuration).
Relationships can be defined between the parts in a product definition. A relationship relates a first set of parts with a second set of parts. A set can include multiple parts. The incorporation of parts in a set can be arbitrary. That is, a multi-part set can contain parts that are otherwise unrelated. For example, a set can contain parts such as an engine, sun roof and a color. These parts seem to be unrelated, however, it is possible to combine them into a relationship set for purposes of forming a relationship using the present invention.
Preferably, the part relationships are: included, excluded, removed, and requires choice. An included part is included automatically. A part is excluded from the configuration when its inclusion would result in an invalid configuration. A part may be removed when another part is added. Thus, when a first part exists in the configuration and a second part is added, the first part is removed from the configuration. The requires choice relationship is used to allow a set of choices to be made from a group of parts. The number of parts chosen is limited to a valid bounds specification. The relations that are created between parts within a product are enforced only on that particular product. However, if some part-to-part relationships are to be enforced on all products within a product line, then the relations are generated once and enforced for all products.
A maintenance system is used to define a product. Using the maintenance system, a product can be defined using the product classifications and the part relationships. A graphical user interface (GUI) is used to allow the user to interactively generate a definition. Instead of configuration languages, GUI operations such as drag and drop and selection operations can be used to specify a definition. The notions of included, optional and required choice are easily comprehensible to a user. Further, the idea that parts have interrelationships is also easily understood. Thus, a product can be defined without having to learn a complicated configuration language.
A configuration system is used to configure a system using a definition created by the maintenance system. The configuration system ensures that the current configuration state is always valid. The user can select and unselect parts in any order. When user input is received, the configuration system validates the input based on the current state of the configuration. In addition, the configuration system identifies selections that could cause a valid configuration to become invalid. The configuration removes these selections from the set of possible selections so that the user does not make an invalid selection.
The configuration system evaluates the current state of a configuration based on the product definition, part relationships and state information. After receipt of input from a user, the configuration system evaluates relationships in both the forward and backward direction. Forward and backward evaluations can result in the addition or deletion of elements from the configuration.
The invention uses both an external and internal representation of a definition or definitions. A translation mechanism is used translate an external representation into an internal representation. The external representation uses a conceptually understandable set of relationships for defining a system and the relationships between the components of the system. The invention takes the definition created by a user and supplements and compresses the definition when necessary to create an internal representation. The internal representation is used during configuration to initialize and validate a configuration based on user input.
During configuration, the invention maintains runtime information that is stored in tables and vectors. To achieve greater processing efficiency, the systems represents elements in a configuration (e.g., product, part, and group) as a bit in a bit vector. Thus, for example, a vector has a length that is equal to the total number of elements. An element""s bit can be set or reset to specify the state of the element in the current configuration. For example, a user vector can be used that specifies for each element whether the element has been selected by the user during the configuration. In addition, excluded and removed vectors identify whether an element is excluded or removed (respectively) from a configuration. Vectors can be used to identify whether an element 1) has been selected (by the user or the configuration system), 2) is selectable, and 3) notSelectable.
Tables contain element relationships. A table is used to represent the includes, excludes, removes, and requires choice relationships, for example. Each table has a left-hand side and a right-hand side that corresponds to the left-hand and right-hand sides of a relationship. In each case, the left-hand side is a bit vector that contains bits that correspond to elements. The includes, excludes and removes tables contain a bit vector in the right-hand side that represents configuration elements. The right-hand side of the requires choice table is a pointer that points to an entry in a group table. The group table entry is a bit vector that identifies the elements that are contained in the group from which a choice is to be made. The right-hand side of a requires choice table entry further includes minimum and maximum designations. Minimum and maximum values identify the minimum and maximum number of group members that are to be selected to satisfy a requires group relationship.
A bit vector implementation of relationships and internal runtime state allows for fast and efficient computation of relationship based configuration. A comparison of bits can be performed in one machine instruction in most cases.